// import {IVertexData} from "../extras/objParser";
// import {ShaderProgram} from "../core/shaderProgram";
// import {Renderer2} from "../core/renderer2";
// import {Material2} from "./material2";
// import {bindVAO, deleteVAO, deleteVBO} from "../core/utils";
//
//
//
//
//
// export class Mesh2{
//
//     vao:WebGLVertexArrayObject | null = null;
//     posVBO:WebGLBuffer | null = null;
//     normalVBO:WebGLBuffer | null = null;
//     indiceVBO:WebGLBuffer | null = null;
//     sharedPosBufferData : Float32Array | null = null;
//
//     // for wireFrame / debug
//     lineVAO:WebGLVertexArrayObject | null = null;
//     lineVBO:WebGLBuffer | null = null;
//     lineIndicesArray:number[] = [];  // 可以放入缓存
//     lineIndiceVBO:WebGLBuffer | null = null;
//     constructor(
//         public vertexData:IVertexData
//     ){
//         // // TODO:可以做到缓存中
//         // // 获取所有的线段
//         // // 排除掉重复的
//         // let lineIndicesPairs:VP[] = [];
//         // let indices = vertexData.indices;
//         // let facelen = indices.length / 3;
//         // for (let i = 0; i < facelen;++i){
//         //     let i0 = indices[3 * i];
//         //     let i1 = indices[3 * i + 1];
//         //     let i2 = indices[3 * i + 2];
//         //     if (!this.containVP(lineIndicesPairs,i0,i1)){
//         //         lineIndicesPairs.push({i0:i0,i1:i1});
//         //     }
//         //     if (!this.containVP(lineIndicesPairs,i1,i2)){
//         //         lineIndicesPairs.push({i0:i1,i1:i2});
//         //     }
//         //     if (!this.containVP(lineIndicesPairs,i2,i0)){
//         //         lineIndicesPairs.push({i0:i2,i1:i0});
//         //     }
//         // }
//         //
//         // lineIndicesPairs.forEach(item=>{
//         //     this.lineIndicesArray.push(item.i0,item.i1);
//         // });
//     }
//
//     cleanup(){
//         let gl = Renderer2.instance().gl;
//         deleteVAO(gl,this.vao);
//
//         // 自身的
//         deleteVBO(gl,this.posVBO);
//         deleteVBO(gl,this.normalVBO);
//         deleteVBO(gl,this.indiceVBO);
//
//
//         // wireFrame的
//         deleteVAO(gl,this.lineVAO);
//         deleteVBO(gl,this.lineVBO);
//         deleteVBO(gl,this.lineIndiceVBO);
//     }
//
//     layoutPos(gl:WebGLRenderingContext,program:ShaderProgram,vbo:WebGLBuffer){
//         gl.bindBuffer(gl.ARRAY_BUFFER,vbo);
//         gl.bufferData(gl.ARRAY_BUFFER,this.sharedPosBufferData,gl.STATIC_DRAW);
//         let attribLocation = program.getAttribId("a_position");
//         gl.enableVertexAttribArray(attribLocation);
//         gl.vertexAttribPointer(attribLocation,3,gl.FLOAT,false,0,0);
//     }
//
//
//     checkNormalVBO(gl:WebGLRenderingContext,program:ShaderProgram){
//         if (!this.normalVBO){
//             debugger
//             this.normalVBO = gl.createBuffer();
//             gl.bindBuffer(gl.ARRAY_BUFFER,this.normalVBO);
//             gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(this.vertexData.normals),gl.STATIC_DRAW);
//             let attribLocation = program.getAttribId("a_normal");
//             gl.enableVertexAttribArray(attribLocation);
//             gl.vertexAttribPointer(attribLocation,3,gl.FLOAT,false,0,0);
//         }
//     }
//     checkIndiceVBO(gl:WebGLRenderingContext){
//         if (!this.indiceVBO){
//             this.indiceVBO = gl.createBuffer();
//             gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.indiceVBO);
//             gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.vertexData.indices),gl.STATIC_DRAW);
//         }
//     }
//
//
//
//
//
//
//
//     //------------------------------------------------
//     // wireframe
//     bindWireFrameVAO(gl:WebGLRenderingContext){
//         if (!this.lineVAO){
//             // @ts-ignore
//             this.lineVAO = gl.createVertexArrayOES();
//         }
//         // @ts-ignore
//         gl.bindVertexArrayOES(this.lineVAO);
//     }
//
//     checkWireFrameBuffers(gl:WebGLRenderingContext,program:ShaderProgram){
//         if (!this.lineVBO){
//             this.lineVBO = gl.createBuffer();
//             this.layoutPos(gl,program,this.lineVBO!);
//         }
//
//         if (!this.lineIndiceVBO){
//             this.lineIndiceVBO = gl.createBuffer();
//             gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER,this.lineIndiceVBO);
//             gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(this.lineIndicesArray),gl.STATIC_DRAW);
//         }
//     }
// }
